@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion

set "SCRIPT_DIR=%~dp0"
set "ENV_FILE=%SCRIPT_DIR%es-env.conf"
set "COMPOSE_FILE=%SCRIPT_DIR%docker-compose.yml"

if not exist "%ENV_FILE%" (
  echo 未找到 %ENV_FILE% 配置文件
  exit /b 1
)

if not exist "%COMPOSE_FILE%" (
  echo 未找到 %COMPOSE_FILE% 文件
  exit /b 1
)

for /f "usebackq eol=# tokens=1* delims==" %%A in ("%ENV_FILE%") do (
  if not "%%A"=="" (
    set "key=%%A"
    set "value=%%B"
    for /f "tokens=* delims= " %%K in ("!key!") do set "key=%%K"
    for /f "tokens=* delims= " %%V in ("!value!") do set "value=%%V"
    if not "!key!"=="" set "!key!=!value!"
  )
)

if "!ELASTIC_PASSWORD!"=="" set "ELASTIC_PASSWORD=changeme"
if "!KIBANA_SYSTEM_PASSWORD!"=="" set "KIBANA_SYSTEM_PASSWORD=kibana123"
if "!ES_HTTP_PORT!"=="" set "ES_HTTP_PORT=19200"
if "!ES_TRANSPORT_PORT!"=="" set "ES_TRANSPORT_PORT=9300"
if "!KIBANA_PORT!"=="" set "KIBANA_PORT=5601"
if "!INSTALL_IK_PLUGIN!"=="" set "INSTALL_IK_PLUGIN=false"
if "!IK_PLUGIN_VERSION!"=="" set "IK_PLUGIN_VERSION=8.15.0"
set "IK_STATUS=未启用"

echo 使用配置文件 %ENV_FILE% 启动 Elasticsearch 和 Kibana...
docker compose -f "%COMPOSE_FILE%" up -d
if errorlevel 1 (
  echo Docker 启动失败，请检查日志。
  exit /b 1
)

if /I "!INSTALL_IK_PLUGIN!"=="true" (
  echo 检测到 INSTALL_IK_PLUGIN=true，准备安装 IK 分词插件...
  set "IK_STATUS=安装中"
  set "IK_DIR=%SCRIPT_DIR%elasticsearch\plugins\ik"
  if exist "!IK_DIR!" (
    echo 现有 IK 插件目录已存在，跳过下载。
    set "IK_STATUS=已存在（跳过）"
  ) else (
    mkdir "%SCRIPT_DIR%elasticsearch\plugins" >nul 2>&1
    set "IK_URL=https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v!IK_PLUGIN_VERSION!/elasticsearch-analysis-ik-!IK_PLUGIN_VERSION!.zip"
    set "IK_ZIP=%SCRIPT_DIR%elasticsearch-analysis-ik-!IK_PLUGIN_VERSION!.zip"
    echo 正在下载 IK 插件: !IK_URL!
    curl -L "!IK_URL!" -o "!IK_ZIP!"
    if errorlevel 1 (
      echo IK 插件下载失败，请手动检查网络或版本号 !IK_PLUGIN_VERSION!。
      set "IK_STATUS=下载失败"
    ) else (
      echo 解压 IK 插件到 plugins 目录...
      tar -xf "!IK_ZIP!" -C "%SCRIPT_DIR%elasticsearch\plugins" >nul 2>&1
      if errorlevel 1 (
        powershell -NoLogo -NoProfile -Command "Expand-Archive -Path '%SCRIPT_DIR%elasticsearch-analysis-ik-!IK_PLUGIN_VERSION!.zip' -DestinationPath '%SCRIPT_DIR%elasticsearch\plugins' -Force" >nul 2>&1
      )
      if exist "%SCRIPT_DIR%elasticsearch\plugins\ik" (
        echo IK 插件目录已存在，跳过重命名。
      ) else if exist "%SCRIPT_DIR%elasticsearch\plugins\elasticsearch-analysis-ik-!IK_PLUGIN_VERSION!" (
        ren "%SCRIPT_DIR%elasticsearch\plugins\elasticsearch-analysis-ik-!IK_PLUGIN_VERSION!" ik
      )
      if exist "!IK_ZIP!" del "!IK_ZIP!"
      set "IK_STATUS=已准备，重启 Elasticsearch 后生效"
      echo IK 插件准备完成，如需生效请重启 Elasticsearch 容器。
    )
  )
) else (
  echo 未启用 IK 分词插件自动安装。可在 es-env.conf 中设置 INSTALL_IK_PLUGIN=true。
)

echo 已完成启动。
echo Elasticsearch: http://localhost:!ES_HTTP_PORT!
echo Kibana:        http://localhost:!KIBANA_PORT!
echo IK 分词插件状态：!IK_STATUS!
echo.
echo 登录信息（Elasticsearch 与 Kibana Web 均使用 elastic 或自建账号）：
echo   elastic / !ELASTIC_PASSWORD!
echo   kibana_system / !KIBANA_SYSTEM_PASSWORD!  ^<仅供 Kibana 容器访问，不能用于界面登录^>
endlocal
